﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Linq;

namespace Sigos
{
    public partial class frmHome : Sigos.Modelo
    {
        public frmHome()
        { //Em nome de JESUS esse sitesma ficara pronto ainda hoje... 
            InitializeComponent();
        }

        private void mnEmpresa_Click(object sender, EventArgs e)
        {
            using (frmEmpresaEmitente frmEmpresa = new frmEmpresaEmitente())
            {
                frmEmpresa.ShowDialog();
                frmEmpresa.Dispose();
            }
        }

        private void parametrosToolStripMenuItem_Click(object sender, EventArgs e)
        {
            using (frmParametros frmParametros = new frmParametros())
            {
                frmParametros.ShowDialog();
                frmParametros.Dispose();
            }
        }

        private void btnProdutos_Click(object sender, EventArgs e)
        {
            using (frmProdutos frmProdutos = new frmProdutos())
            {
                frmProdutos.ShowDialog();
                frmProdutos.Dispose();
            }
        }

        private void btnClientes_Click(object sender, EventArgs e)
        {
            using (frmClientes frmClientes = new frmClientes())
            {
                frmClientes.ShowDialog();
                frmClientes.Dispose();
            }
        }

        private void btnVendas_Click(object sender, EventArgs e)
        {
            using (frmVendas Vendas = new frmVendas())
            {
                Vendas.ShowDialog();
                Vendas.Dispose();
            }
            
            }

        private void toolStripButton5_Click(object sender, EventArgs e)
        {
            using (frmContasPagar CP = new frmContasPagar())
            {
                CP.ShowDialog();
                CP.Dispose();
                CarregaContasPagar();
            } 
        }

        private void frmHome_Load(object sender, EventArgs e)
        {
            CarregaContasPagar();
            CarregaContasReceber();
        }

        private void btnPagarContaSelecionada_Click(object sender, EventArgs e)
        {
            try
            {
                var ItemSelecionado = lstContasPagar.SelectedItems[0].Text;
                Utilidades.NumeroConta = Convert.ToInt32(ItemSelecionado);
                frmPagarConta Pagar = new frmPagarConta();
                Pagar.ShowDialog();
                lstContasPagar.Refresh();
            }
            catch
            {
                Utilidades util = new Utilidades();
                util.Erro("Selecione uma linha da tabela acima antes de pagar a conta!");
            }
        }

        private void dtPContasPagar_ValueChanged(object sender, EventArgs e)
        {
            CarregaContasPagar();
        }

        private void CarregaContasPagar()
        {
            using (SigosEntities Entidades = new SigosEntities())
            {
                decimal totalV = 0;
                decimal preco = 0;
                string DataSelecionada = DateTime.Parse(dtPContasPagar.Text).ToShortDateString();
                DateTime Data = Convert.ToDateTime(DataSelecionada);
                bool Condicao;
                if (cBPagas.Checked)
                {
                    Condicao = true;
                }
                else
                {
                    Condicao = false;
                }
                lstContasPagar.Items.Clear();
                var CP = (from co in Entidades.Contas_a_Pagar
                          where co.Paga == Condicao && co.Vencimento == Data
                        
                          select co).ToList();
                foreach (Contas_a_Pagar contP in CP)
                {
                    ListViewItem item = new ListViewItem();
                    item.Text = contP.CodigoContaP.ToString();
                    item.SubItems.Add(contP.Vencimento.Value.ToShortDateString());
                    item.SubItems.Add(contP.Clientes.NomeFantasia);
                    item.SubItems.Add(contP.Valor.ToString());
                    //item.SubItems.Add(cli.)
                    lstContasPagar.Items.Add(item);
                    preco = (decimal)contP.Valor;
                    totalV = totalV + preco;
                    tbTotalPagar.Text = totalV.ToString();
                }
            }
        }

        private void CarregaContasReceber()
        {
            using (SigosEntities Entidades = new SigosEntities())
            {
                decimal totalV = 0;
                decimal preco = 0;
                string DataSelecionada = DateTime.Parse(dtPContasReceber.Text).ToShortDateString();
                DateTime Data = Convert.ToDateTime(DataSelecionada);
                bool Condicao;
                if (cBRecebidas.Checked)
                {
                    Condicao = true;
                }
                else
                {
                    Condicao = false;
                }
                lstContasReceber.Items.Clear();
                var CP = (from co in Entidades.Contas_a_Receber
                          where co.Paga == Condicao && co.Vencimento == Data

                          select co).ToList();
                foreach (Contas_a_Receber contP in CP)
                {
                    ListViewItem item = new ListViewItem();
                    item.Text = contP.CodigoContaR.ToString();
                    item.SubItems.Add(contP.Vencimento.Value.ToShortDateString());
                    item.SubItems.Add(contP.Clientes.NomeFantasia);
                    item.SubItems.Add(contP.Valor.ToString());
                    lstContasReceber.Items.Add(item);

                    preco = (decimal)contP.Valor;
                    totalV = totalV + preco;
                    tbTotalReceber.Text = totalV.ToString();
                }
            }
        }

        private void cBPagas_CheckedChanged(object sender, EventArgs e)
        {
            CarregaContasPagar();
        }

        private void dtPContasReceber_ValueChanged(object sender, EventArgs e)
        {
            CarregaContasReceber();
        }

        private void cBRecebidas_CheckedChanged(object sender, EventArgs e)
        {
            CarregaContasReceber();
        }

        private void toolStripButton4_Click(object sender, EventArgs e)
        {
            using (frmContasReceber Cr = new frmContasReceber())
            {
                Cr.ShowDialog();
                Cr.Dispose();
                CarregaContasReceber();
            }
        }

        private void btnReceberConta_Click(object sender, EventArgs e)
        {
            try
            {
                var ItemSelecionado = lstContasReceber.SelectedItems[0].Text;
                Utilidades.NumeroConta = Convert.ToInt32(ItemSelecionado);
                frmReceberConta Pagar = new frmReceberConta();
                Pagar.ShowDialog();
                lstContasReceber.Refresh();
            }
            catch
            {
                Utilidades util = new Utilidades();
                util.Erro("Selecione uma linha da tabela acima antes de pagar a conta!");
            }
        }

        private void contasAPagarToolStripMenuItem_Click(object sender, EventArgs e)
        {
            using (frmContasPagar CP = new frmContasPagar())
            {
                CP.ShowDialog();
                CP.Dispose();
                CarregaContasPagar();
            } 
        }

        private void contasAReceberToolStripMenuItem_Click(object sender, EventArgs e)
        {
            using (frmContasReceber Cr = new frmContasReceber())
            {
                Cr.ShowDialog();
                Cr.Dispose();
                CarregaContasReceber();
            }
        }

        private void relatorioToolStripMenuItem_Click(object sender, EventArgs e)
        {

        }
    }
}
